package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.ui.Mouse;
	
	/**
	 * Document maître
	 * @author Jean-Marie PETIT@hsh
	 */
	public class Mur extends Sprite 
	{
		private var _lg:int = 670;
		private var _ht:int = 400;
		private var _balle:Balle;
		private var _panneau:Panneau;
		private var _raquette:Raquette;
		private var _numBalle:int;
		
		public var briques:Vector.<Brique>=new Vector.<Brique>;
		
		public function Mur() 
		{
			new Degrade(graphics, _lg, _ht, 20, [0xffcccc, 0x330033], [1, 1], [0, 255]); 
			_panneau = new Panneau(this);
			_raquette = new Raquette(this);
			creerBriques();
			balleNeuve();
		}
		
		public function afficher():void 
		{
			_panneau.ecrire("Briques : "+ briques.length, "Vitesse : "+ _balle.vites, "Balle : "+ _numBalle+"/3");
			if (briques.length == 0)
			{
				_balle.arreter();
				_panneau.poser((_lg-400)/2, 100, 400, 80);
				_panneau.ecrire("Vous avez merveilleusement réussi !","Vous êtes le meilleur !","Mmmuaahhh...");
			}
		}
		 
		public function balleNeuve():void
		{
			_numBalle ++;
			_balle = new Balle(this, _lg / 2, _ht - 30);
			if (_numBalle < 4)
			{
				_panneau.ecrire("Balle : " + _numBalle + "/3", "Cliquez pour lancer la balle");
				stage.addEventListener(MouseEvent.CLICK, surClic)					
			} else 
			{
				_panneau.poser((_lg-400)/2, 100, 400, 100);
				_panneau.ecrire("Vous avez lamentablement échoué !","Vous êtes le maillon faible !","Aurevoir !");
			}
		}
		
		private function surClic(e:Event):void 
		{
			afficher();
			stage.removeEventListener(MouseEvent.CLICK, surClic);
			_balle.lancer();			
		}
		
		private function creerBriques():void 
		{
			var couleur:Array = [0xff0000, 0x0000ff, 0x00ff00, 0xff00ff, 0xffff00,0x0];
			for (var ligne:int = 0; ligne < couleur.length; ligne ++) 
			{
				for (var colonne:int = 0; colonne < 16; colonne++) 
				{
					new Brique(this, colonne * 42, ligne * 20, couleur[ligne]);
				}
			}
		}
		
		public function get lg():int 
		{
			return _lg;
		}

		public function get ht():int 
		{
			return _ht;
		}

		public function get balle():Balle 
		{
			return _balle;
		}
	
		public function get raquette():Raquette 
		{
			return _raquette;
		}
	}
}